package org.sunrise.game.common.utils;

import com.github.yitter.contract.IdGeneratorException;
import com.github.yitter.contract.IdGeneratorOptions;
import com.github.yitter.idgen.YitIdHelper;
import org.sunrise.game.common.log.LogCore;

public class IdGenerator {
    private static IdGeneratorOptions options;

    public static void init(int workId) {
        if (options == null) {
            options = new IdGeneratorOptions((short) workId); // 节点id 限制为1-1024
            options.WorkerIdBitLength = 10; // 2^10-1，即最多支持1024个节点。
            options.SeqBitLength = 12; // 限制每毫秒生成的ID个数。若生成速度超过5万个/秒，建议加大 SeqBitLength 到 10。
            options.BaseTime = 1727712000000L; // 基础时间，设定为2024-10-01 00:00:00
            YitIdHelper.setIdGenerator(options);
        }
    }

    public static long getId() {
        try {
            return YitIdHelper.nextId();
        } catch (IdGeneratorException e) {
            LogCore.Server.error("IdGenerator, failed");
        }
        return 0L;
    }
}
